<!-- 单位选择组件，单选 -->
<template>
  <van-action-sheet v-model="showCompo" :close-on-click-overlay="false" @closed="closeSheet"  title="部门" cancel-text="确定">
  	<view class="tree-container">
  		<!-- <input v-model="filterText" placeholder="输入关键字进行过滤" /> -->
  		<van-field
  			v-model="filterText"
  			label=""
  			placeholder="输入关键字进行过滤"
  			:clearable="true"
  		  />
  		<ly-tree :tree-data="treeData"
  			:props="props"
  			ref="tree"
  			node-key="deptId"
  			show-checkbox
  			checkOnClickNode
			checkStrictly
  			:default-expanded-keys="expandKeys"
  			@check-change="handleCheckChange"
  			:filter-node-method="filterNode"
  			child-visible-for-filter-node
  		/>
  	</view>
  </van-action-sheet>
</template>

<script>

export default{
  props: {
    showOrgTree:{
      type: Boolean,
      default: false
    },
	//forwardType:mainTO：主办，copyTo：抄送，forward：转发单位
	forwardType:{
		type:String,
		default:''
	},
	nodeData:{
		showNode:{
			type:String,
			default:''
		},
		hideNode:{
			type:String,
			default:''
		}
	}

  },

  data(){
    return{
		showCompo:false,//当前组件是否显示
		expandKeys: ["0","001","001001"],//默认展开的节点-对应的deptId的值
		props: function() {
			return {
				// 这里的label就可以使用函数进行自定义的渲染了
				// label(data, node) {
				// 	return '节点' + node.data.personName;
				// },
				label: 'deptName', // 指把数据中的‘personName’当做label也就是节点名称
				children: 'children' // 指把数据中的‘childs’当做children当做子节点数据
			}
		},
		filterText:'',
		treeData: [],
		deptName:[],//选中的单位信息
		deptCode:[],//选中的单位信息
	}
  },
  mounted() {
  },
  watch: {
  	filterText(val) {
  		this.$refs.tree.filter(val);
  	},
	showOrgTree(val){
		this.showCompo = val
	},
	nodeData:{
		handler(newName, oldName) {
			 // if(this.util.isNotEmpty(newName)){
				 this.getOrgTree()
			 // }
		 },
		 immediate: true,
		 deep: true
	},
	forwardType:{
		handler(newName, oldName) {
			//如果是forward（转发单位），展开节点不一样
			if(newName=='forward' || newName=='drafterDept'){
				this.expandKeys=["0","001"]
			}
		 },
		 immediate: true,
		 deep: true
	}
  },
  methods: {
	  closeSheet(){
	    let orgInfo = {forwardType:this.forwardType,orgName:this.deptName.toString(),deptCode:this.deptCode.toString()}
	    this.$emit('closeOrgTreeSheet',orgInfo)
	  },

	  // 只要节点的选中状态改变就触发（包括设置默认选中，点击选中/取消选中），会被触发多次
	  handleCheckChange(obj) {
        console.log("obj: " + JSON.stringify(obj));
	  	if(obj.checked == true){//{"checked":false,"node":{"time":1629361630143,"id":3459,"text":null,"checked":false,"indeterminate":false,"data":{"deptId":"002001","deptCode":"002001","deptName":"华北管理局","leaderId":"sysadmin","parentId":"002","allParentId":"0,002,002001","deptLevel":1,"sort":36,"deptType":"org","divisionId":"--","telephone":"11","address":"1","zipCode":"1     ","extend1":"华北管理局","extend2":null,"extend3":null,"extend4":null,"extend5":null,"extend6":"002001","extend7":null,"extend8":null,"extend9":null,"extend10":null,"isValid":"1","createUser":"CAAC_SYSTEM","createTime":"2021-07-27T12:30:00.011+0000","updateUser":null,"updateTime":null,"depth":null}}
	  		this.deptName.push(obj.data.deptName)
	  		this.deptCode.push(obj.data.deptId)
	  	}else{
	  		this.deptName.splice(this.deptName.indexOf(obj.data.deptName),1)
	  		this.deptCode.splice(this.deptCode.indexOf(obj.data.deptId),1)
	  	}
	  },
	  //呈报单位查询
	  filterNode(value, data) {
	  	if (!value) return true;
	  	return data.deptName.indexOf(value) !== -1;
	  },
	  //加载呈报单位树
	  getOrgTree(){
	  	this.$http({
	  	  url: this.$http.adornUrl(`/caac/platform/org/depts/orgDeptTree`),
	  	  method: 'get',
	  	  params: this.$http.adornParams({
	  		  'systemKey': this.cache.get('userInfo').systemKey,//固定值
	  		  'systemFlag': this.cache.get('userInfo').systemFlag,//固定值
	  		  'showNode':this.nodeData.showNode,//只查管理局的树
			  'hideNode':this.nodeData.hideNode
	  	  })
	  	}).then(({data}) => {
	  		// console.log("单位信息data: " + JSON.stringify(data.data));
	  		if(data.code==200){
	  			this.treeData = this.util.treeDataTranslate(data.data,'deptId','parentId')

	  		}

	  	})
	  },
  }
}
</script>

<style>
.van-action-sheet{
  z-index: 9999;
  min-height: 80%;
}
</style>
